/* FreeDom: шапка тренинга + тариф. Общий скрипт для всех страниц школы.
   Срабатывает только там, где в крошках/заголовке есть «Free Dom (...)»
   или название из CFG.extra. Остальные тренинги не затрагивает. */
(function () {
  if (window.__freedomHeader) return;          // защита от двойного подключения
  window.__freedomHeader = true;

  const CFG = {
    pages: /\/teach\/control\/stream\/view\//,  // где рисуем шапку; добавить |\/lesson\/view\/ — если нужна и в уроках
    noTariffLabel: 'DEMO',                       // «Free Dom» без скобок
    extra: {                                     // не-FreeDom тренинги с шапкой; удалите строку, если не нужно
      'Золотой Закон Отношений': 'ИНТЕНСИВ'
    },
    spaceHtml: '<p>Пространство Светы Дубинской</p>',
    imgSrc: '/pl/fileservice/user/file/download?h=6c2cb914892aa3887c300a00212b351c.svg'
  };

  if (!CFG.pages.test(location.pathname)) return;
      // Глушим старый скрипт из блоков тренингов, чтобы он не обрабатывал страницу второй раз
  window.TrainingScriptsInitialized = window.TrainingScriptsInitialized || {};
  window.TrainingScriptsInitialized.main = true;

  /* ---------- тариф ---------- */
  function readTariff() {
    const texts = [
      ...document.querySelectorAll('.breadcrumbs a'),      // страница тренинга
      ...document.querySelectorAll('ul.breadcrumb li a'),  // страница урока
      ...document.querySelectorAll('.page-header h1')      // корневой тренинг
    ].map(n => n.textContent.replace(/\s+/g, ' ').trim());

    for (const t of texts) {
      const m = t.match(/^(?:\[[^\]]*\]\s*)?Free\s*Dom\s*\(([^)]+)\)/i);
      if (m) return m[1].trim().toUpperCase();
    }
    if (texts.some(t => /^(?:\[[^\]]*\]\s*)?Free\s*Dom$/i.test(t))) return CFG.noTariffLabel;

    for (const [name, label] of Object.entries(CFG.extra)) {
      if (texts.some(t => t.includes(name))) return label;
    }
    return null;                                  // не FreeDom — ничего не делаем
  }

  /* ---------- шапка ---------- */
  function createHeader(tariff) {
    let wrap = document.querySelector('.freedom-header-wrapper');
    if (wrap) {                                   // шапка уже есть (из старого блока) — только обновим тариф
      setTariff(wrap, tariff);
      return wrap;
    }
    const container = document.querySelector('.gc-main-content .container') || document.querySelector('.container');
    if (!container) return null;

    wrap = document.createElement('div');
    wrap.className = 'freedom-header-wrapper';
    wrap.innerHTML =
      '<div class="freedom-header-space">' + CFG.spaceHtml + '</div>' +
      '<h2 class="freedom-header-tariff"></h2>' +
      '<div class="freedom-header-img"><img src="' + CFG.imgSrc + '" alt=""></div>';
    setTariff(wrap, tariff);

    const faculty = document.querySelector('.current-faculty');
    if (faculty) {
      const clone = faculty.cloneNode(true);
      [clone, ...clone.querySelectorAll('*')].forEach(el => {
        el.classList.remove('hidden', 'Hidden', 'HIDDEN');
        el.removeAttribute('hidden');
      });
      wrap.appendChild(clone);
    }

    const crumbs = document.querySelector('.breadcrumbs');
    if (crumbs) crumbs.insertAdjacentElement('afterend', wrap);
    else container.insertBefore(wrap, container.firstChild);
    return wrap;
  }

  function setTariff(wrap, tariff) {
    const el = wrap.querySelector('.freedom-header-tariff');
    if (!el) return;
    el.textContent = tariff;
    el.dataset.tariff = tariff.toLowerCase();
    wrap.dataset.tariff = tariff.toLowerCase();
  }

  /* ---------- таблица подтренингов и сезоны ---------- */
  function processStreamTable() {
    document.querySelectorAll('.stream-table tr:not([data-fd-done])').forEach(tr => {
      tr.dataset.fdDone = '1';
      if (tr.querySelector('.training-name')) return;  // строку уже обработали
      const link = tr.querySelector('a');
      if (!link) return;

      const infoDiv = link.querySelector('div');
      if (infoDiv) {
        const parts = infoDiv.textContent.split('.');
        if (parts.length >= 3 && parts[2].trim()) infoDiv.textContent = parts[2].trim();
        else infoDiv.style.display = 'none';
      }

      const imageUrl = tr.getAttribute('data-training-image');
      if (imageUrl && imageUrl.trim()) {
        const img = document.createElement('img');
        img.src = imageUrl;
        img.alt = '';
        img.className = 'custom-training-img';
        link.appendChild(img);
      }

      const titleSpan = link.querySelector('.stream-title');
      if (titleSpan) {
        const wrap = document.createElement('div');
        wrap.className = 'training-name';
        wrap.appendChild(titleSpan);
        if (infoDiv && infoDiv.style.display !== 'none') wrap.appendChild(infoDiv);
        link.insertBefore(wrap, link.firstChild);
      }

      // сезоны
      const title = tr.querySelector('.training-name .stream-title');
      let seasonText = '';
      const infoWithSeason = [...tr.querySelectorAll('a .training-name div')]
        .find(d => /сезон/i.test(d.textContent));
      if (infoWithSeason) {
        seasonText = infoWithSeason.textContent.trim();
      } else if (title && /сезон/i.test(title.textContent)) {
        const m = title.textContent.match(/(\d+-й\s+Сезон)/i);
        seasonText = m ? m[1] : '';
      }
      if (infoWithSeason || (title && /сезон/i.test(title.textContent))) {
        tr.classList.add('seasons');
        if (seasonText && title) title.style.setProperty('--season-text', '"' + seasonText + '"');
      }
    });
  }

  /* ---------- крошки ---------- */
  function processBreadcrumbs() {
    const crumbs = document.querySelector('.breadcrumbs');
    const header = document.querySelector('.page-header');
    if (!crumbs || !header || crumbs.dataset.fdDone) return;
    crumbs.dataset.fdDone = '1';
    header.appendChild(crumbs);
    const first = crumbs.querySelector('a');
    if (first) first.textContent = 'Вернуться на главную';
  }

  /* ---------- запуск ---------- */
  function init() {
    const tariff = readTariff();                 // читаем ДО того, как трогаем крошки
    /*if (!tariff) return;                         // не FreeDom*/
        if (!tariff) {                               // не FreeDom — отдаём страницу старому скрипту, если он есть
      delete window.TrainingScriptsInitialized.main;
      if (window.TrainingEnhancements) window.TrainingEnhancements.initialize();
      return;
    }
    document.documentElement.classList.add('fd-page', 'fd-' + tariff.toLowerCase());
    createHeader(tariff);
    processStreamTable();
    processBreadcrumbs();
  }

  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', init, { once: true });
  else init();
})();